package org.domain.sigepac.Entity;

import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;

import org.domain.sigepac.Utils;
import org.domain.sigepac.repository.RepositorioGrupoPsicogenese;
import org.hibernate.validator.Length;
import org.hibernate.validator.NotNull;

@Entity
@Table(name = "tb_grupo_psicogenese")
public class GrupoPsicogenese extends EntidadeAbstrata {

	private static final long serialVersionUID = -1001434678190176828L;
	

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private Integer id;

	@Column(name = "nome", nullable = false, length = 100)
	@NotNull
	@Length(max = 100)
	private String nome;

	@Column(name = "ordem", nullable = false,unique=true)
	@NotNull
	private Integer ordem;

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "grupo")
	private Set<Psicogenese> psicogeneses = new HashSet<Psicogenese>(0);

	
	public Serializable getId() {
		// TODO Auto-generated method stub
		return id;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public Integer getOrdem() {
		if(ordem==null){
			try{
				RepositorioGrupoPsicogenese repositorioGrupoPsicogenese= Utils.component("repositorioGrupoPsicogenese");
				ordem=repositorioGrupoPsicogenese.porOrdemDecrescente().get(0).ordem+1;
			}catch(Exception e){
				ordem=1;
			}
		}
		return ordem;
	}

	public void setOrdem(Integer ordem) {
		this.ordem = ordem;
	}

	public Set<Psicogenese> getPsicogeneses() {
		return psicogeneses;
	}

	public void setPsicogeneses(Set<Psicogenese> psicogeneses) {
		this.psicogeneses = psicogeneses;
	}

	
	
}
